package main

import "fmt"

func main() {
	// 自动推导，同事初始化
	s1 := []int{1, 2, 3, 4} // 切片中[]没有固定长度
	fmt.Println("s1 =", s1) // s1 = [1 2 3 4]

	// 1.截取其他切片
	s2 := s1[1:2:3]                                         // 起始下标1，len=2-1=1，cap=3-1=2
	fmt.Println("len(s2) =", len(s2), "cap(s2) =", cap(s2)) // len(s2) = 1 cap(s2) = 2

	// 2.不指定容量，容量和长度一样
	s3 := s1[:]
	fmt.Println("len(s3) =", len(s3), "cap(s3) =", cap(s3)) // len(s3) = 4 cap(s3) = 4

	// 3.操作某个元素，和数组一样
	data := s3[0]
	fmt.Println("data =", data) // data = 1

	// 4.从0开始，取3个元素
	s4 := s1[:3]
	fmt.Println("s4 =", s4) // s4 = [1 2 3]

	// 5.从下标1开始，到结尾
	s5 := s1[1:]
	fmt.Println("s5 =", s5) // s5 = [2 3 4]
}
